package HuaWeiOd.Q4A;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 信号传播过程中会出现一些误码，不同的数字表示不同的误码ID，取值范围为1~65535，用一个数组记录误码出现的情况，
 * 每个误码出现的次数代表误码频度，请找出记录中包含频度最高误码的最小子数组长度。
 * <p>
 * 输入描述
 * <p>
 * 误码总数目：取值范围为0~255，取值为0表示没有误码的情况。
 * 误码出现频率数组：误码ID范围为1~65535，数组长度为1~1000。
 * <p>
 * 输出描述
 * <p>
 * 包含频率最高的误码最小子数组长度
 * <p>
 * 示例1 输入输出示例仅供调试，后台判题数据一般不包含示例
 * <p>
 * 输入
 * <p>
 * 5
 * <p>
 * 1 2 2 4 1
 * <p>
 * 输出
 * <p>
 * 2
 * <p>
 * 说明
 * <p>
 * 频度最高的有1和2，他们的频度均为2.
 * <p>
 * 可能的记录数组为[2,2]和 [1,2,2,4,1]
 * <p>
 * 最短的长度为2.
 * <p>
 * 示例2 输入输出示例仅供调试，后台判题数据一般不包含示例
 * <p>
 * 输入
 * <p>
 * 7
 * 1 2 2 4 2 1 1
 * <p>
 * 输出
 * <p>
 * 4
 * <p>
 * 说明
 * <p>
 * 最短的为[2,2,4,2]
 * https://www.dgrt.cn/a/2266973.html?action=onClick
 *
 * @author caihe
 * @date 2023/4/14 13:53
 */
public class A_通信误码 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
            map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
        }
        // 记录元素出现的次数 取最多次数的元素，
        int max = map.values().stream().mapToInt(Integer::intValue).max().getAsInt();
        List<Integer> list = new ArrayList<>();
        for (Integer key : map.keySet()) {
            if (map.get(key) == max) {
                list.add(key);
            }
        }
        List<Integer> collect = Arrays.stream(arr).boxed().collect(Collectors.toList());
        int min = Integer.MAX_VALUE;
        // 找到key的第一个和最后一个下标 取最短
        for (Integer key : list) {
            int left = collect.indexOf(key);
            int right = collect.lastIndexOf(key);
            min = Math.min(right - left, min);
        }

        System.out.println(min + 1);
    }
}
